iT邦幫忙

2023 iThome 鐵人賽

DAY 13
1
自我挑戰組

NodeJS with MongoDB專案開發系列 第 13

day 13mongo db with node.js專案開發

  • 分享至 

  • xImage
  •  

珍珠奶茶店的營銷

經營一家珍珠奶茶店成本的開銷、賺多少錢、員工薪水、利潤比例,因次數據分析是相當重要的,因此我們需要node.js程式來幫我們分析

const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

// 用於存儲訂單的陣列
const orders = [];

// 函數:添加訂單
function addOrder() {
  rl.question('請輸入訂單詳情(例如:顧客姓名,飲料名稱,價格):', (input) => {
    const [customerName, drinkName, price] = input.split(',');
    const order = {
      customerName,
      drinkName,
      price: parseFloat(price),
    };
    orders.push(order);
    console.log('訂單已添加!');
    showMainMenu();
  });
}

// 函數:顯示訂單列表
function showOrders() {
  console.log('訂單列表:');
  for (const order of orders) {
    console.log(`${order.customerName} 購買了 ${order.drinkName},價格:${order.price}元`);
  }
  showMainMenu();
}

// 函數:計算總銷售額
function calculateTotalSales() {
  const totalSales = orders.reduce((total, order) => total + order.price, 0);
  console.log(`總銷售額:${totalSales}元`);
  showMainMenu();
}

// 函數:顯示主菜單
function showMainMenu() {
  console.log('\n主菜單:');
  console.log('1. 添加訂單');
  console.log('2. 顯示訂單列表');
  console.log('3. 計算總銷售額');
  console.log('4. 退出');
  rl.question('請選擇操作(輸入對應的數字):', (choice) => {
    switch (choice) {
      case '1':
        addOrder();
        break;
      case '2':
        showOrders();
        break;
      case '3':
        calculateTotalSales();
        break;
      case '4':
        rl.close();
        break;
      default:
        console.log('無效的選項!');
        showMainMenu();
    }
  });
}

// 啟動程序
console.log('歡迎來到珍珠奶茶店訂單管理系統!');
showMainMenu();

// 監聽當用戶關閉程序時,關閉 readline 介面
rl.on('close', () => {
  console.log('程序已退出。');
  process.exit(0);
});

這個Node.js程式是一個簡單的控制台應用,用於管理一家珍珠奶茶店的訂單。我們將它分為幾個主要部分,然後進行解釋:

  1. 引入必要的模塊:

    const readline = require('readline');
    

    我們使用Node.js的readline模塊來處理控制台輸入和輸出。

  2. 初始化readline接口:

    const rl = readline.createInterface({
      input: process.stdin,
      output: process.stdout,
    });
    

    我們創建一個readline接口,它允許我們從用戶那裡接收輸入並向控制台輸出信息。

  3. 訂單數據的存儲:

    const orders = [];
    

    我們使用一個JavaScript陣列orders來存儲訂單信息。

  4. 定義操作函數:

    • addOrder():用戶可以添加新的訂單,我們讓用戶輸入顧客姓名、飲料名稱和價格,然後將該訂單添加到orders陣列中。

    • showOrders():顯示所有現有的訂單列表。

    • calculateTotalSales():計算所有訂單的總銷售額。

    • showMainMenu():顯示主菜單,用戶可以選擇不同的操作。

  5. 顯示主菜單和處理用戶輸入:

    我們使用showMainMenu()函數來顯示主菜單,該菜單提供以下選項:

    • 添加訂單(1)
    • 顯示訂單列表(2)
    • 計算總銷售額(3)
    • 退出程序(4)

    程式使用rl.question()函數來等待用戶輸入,然後根據選擇調用相應的操作函數。

  6. 啟動程序:

    我們在程序開始時歡迎用戶,然後調用showMainMenu()函數以顯示主菜單。

  7. 監聽程序關閉事件:

    最後,我們使用rl.on('close', ...)來監聽當用戶關閉程序時的事件,並在關閉時顯示一條結束信息並退出程序。


上一篇
day 12mongo db專案開發
下一篇
day 14 Node.js with Mongo DB專案開發
系列文
NodeJS with MongoDB專案開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言